package com.ccc.boot.util;

import com.ccc.boot.pojo.BaseTree;

import java.util.ArrayList;
import java.util.List;

/**
 * @author superC
 * @version 0.1.0
 * @Description： 建树工具类
 * @date 2020/3/15
 */

public class TreeUtils {

    public static final Integer ROOT_NODE = -1;

    /**
     * 两层循环实现建树
     *
     * @param treeNodes 传入的树节点列表
     * @param root      所需树的根节点
     * @return {@link List<T>}  泛型, 需继承BaseTree
     * @date 2022/4/8 15:55
     * @author superC
     */
    public static <T extends BaseTree> List<T> bulid(List<T> treeNodes, Long root) {
        List<T> trees = new ArrayList<T>();
        for (T treeNode : treeNodes) {
            if (root.equals(treeNode.getPid())) {
                trees.add(treeNode);
            }
            for (T it : treeNodes) {
                if (it.getPid().equals(treeNode.getId())) {
                    treeNode.add(it);
                }
            }
        }
        return trees;
    }

}
